今天來討論一下排除及簡記法.
在之前例子中,多是使用列舉,
在一些情況下用排除會比較方便.
來看以下的例子
In [1]: import re
In [2]: re.search("[^0-9][0-9]", "G7") != None
Out[2]: True
列舉前面加個^,就變排除了.注意,這裡的^不是錨點.
再來看下面的例子
In [3]: re.search("[^0-9][0-9]", "7") != None
Out[3]: False
False的原因,很簡單,個數不符合! 排除數字,但是空(Null)是
無法比較的.
雖然列舉可以讓我們寫出需要的pattern,但是有若有簡易的方式
來表達,會更方便.
常見的有:
\d 代表 digital,數字.
\w 代表 word, 相當於 [0-9A-Za-z_]
\s 代表 space, 空白 Tab 換行或換頁, 相當於 [ \t\r\n\v\f]
\D \W \S 分別對應 \d \w \s 的排除方式.
來看以下的例子:
In [4]: re.search(r"\d", "7") != None
Out[4]: True
In [5]: re.search(r"\d", "x") != None
Out[5]: False
In [6]: re.search(r"\w", "7") != None
Out[6]: True
In [7]: re.search(r"\w", "x") != None
Out[7]: True
注意到 7也屬於 word.
In [8]: re.search(r"\w", "@") != None
Out[8]: False
符號不屬於 word
In [9]: re.search(r"\s", " ") != None
Out[9]: True
空白屬於 space
In [10]: re.search(r"\s", "") != None
Out[10]: False
Null 不屬於 space